home *** CD-ROM | disk | FTP | other *** search
- --------------------------------------------------------------------------------
- - GFA-BASIC Interpreter/Compiler-Patcher -
- - Version 0.99 -
- --------------------------------------------------------------------------------
- - Compiler & Library-Patches von -
- - Christoph Conrad, Adalbertsteinweg 113, D-52070 Aachen, eMail: AC3.maus.de -
-
- - Interpreter-Patches und GEM-Oberfläche von -
- - Gregor Duchalski, Baueracker 15a, D-44627 Herne, eMail: DO.maus.ruhr.de -
- --------------------------------------------------------------------------------
-
- Das vorliegende Programm gestattet es auf komfortable Weise, sinnvolle Patches
- am GFA-BASIC 3.x Interpreter & Compiler vorzunehmen.
-
- Wählen Sie bitte zu Beginn den Basic-Interpreter oder Compiler (GFA_BCOM.PRG)
- aus. Danach gelangen Sie in den jeweiligen Einstellungsdialog.
-
- Etwas vorweg: Sicherheitshalber sollten Sie die gepatchten Programme nicht unter
- dem Original-Namen abspeichern. Wir übernehmen keine Gewähr für die Funktions-
- fähigkeit der Patches, wer also seinen Interpreter zermanscht und keine Sicher-
- heitskopie besitzt, ist selber schuld!
-
- --------------------------------------------------------------------------------
- Patchen des Compilers
- --------------------------------------------------------------------------------
- Am Compiler bzw. an der Lib können zwei Veränderungen vorgenommen werden:
-
- -Einfügung eines verbesserter INIT-Teils
- -Bugfix für den Absturz unter MAGX!
-
- Beide Patches können getrennt oder auch in 'einem Rutsch' vorgenommen werden.
- Der MAG!X-Patch verändert nur die Datei GFA_BCOM.PRG, der INIT-Patch auch
- die Library.
-
- Im Patch-Dialog können Sie nun angeben, unter welchen Namen der gepatchte
- Compiler bzw. die Library gespeichert werden sollen. Ggf. können Sie hier auch
- die Original-Library erneut festlegen, falls der voreingestellte Name nicht
- zutreffen sollte.
-
- --------------------------------------------------------------------------------
- Patchen des Compilers I: Neuer INIT-Teil
- --------------------------------------------------------------------------------
- Genaue Hintergrund-Informationen über den neuen INIT-Teil entnehmen Sie
- bitte dem Text LIBPATCH.TXT.
-
- Wichtig: Im Ordner LIBPATCH müssen sich die Dateien HIDEM.O, INIT35.O und
- INIT36.O befinden!
-
- Klicken Sie nun auf 'Patchen', so wird der automatische Patchvorgang gestartet.
- Am Ende wird versucht, mit dem Programm MAKE_NDX.PRG eine neue Indexdatei
- (GFA3BLIB.NDX) zu erzeugen. Dieses Programm (es sollte sich im Lieferumfang
- Ihres Compilers befunden haben) wird zunächst im Ordner der Original-Library,
- danach im Ordner LIBPATCH gesucht. Bei Mißerfolg können Sie diese Datei noch
- in der Dateiauswahlbox auswählen. Schlägt auch das fehl, so beendet sich das
- Programm. Bedenken Sie bitte, daß Sie in diesem Fall eine NDX-Datei 'per Hand'
- anlegen müssen. Vermeiden Sie diese Situation also besser.
-
- --------------------------------------------------------------------------------
- Patchen des Compilers II: MAG!X-Bugfix
- --------------------------------------------------------------------------------
- Der Compiler stürzt unter MAG!X mit der Meldung "Speicherblock zerstört" ab.
-
- Ursache:
- Der Compiler reduziert per MShrink (GEMDOS 74) seinen Speicherbedarf auf das
- Notwendige. Per Malloc (GEMDOS 72) fragt er dann nach dem größten
- verfügbaren Speicherblock und alloziert diese Größe abzüglich 16 KByte.
- Leider geht das Programm davon aus, daß der allozierte Speicher direkt
- hinter dem vorher geshrinkten Bereich liegt. Im allgemeinen stimmt dies
- sogar. Unter MAG!X liegt vor dem allokierten Speicherblock (die
- Adresse, die MAlloc zurueckgibt) allerdings ein sogenannter MCB, der 'Memory
- Control Block'.
-
- Dieser enthält
- - eine Kennung ('ANDR' oder 'KROM', einer der Programmierer,
- Andreas Kromke, läßt grüßen)
- - die Länge des allozierten Blocks
- - die Basepageadresse des Programmes, welchem der Block gehört
- - den Zeiger auf den letzten MCB.
-
- Der GFA-Compiler ueberschreibt den MCB. Nach dem Terminieren des Compilers
- überprüft MAG!X, ob die Kette der MCBs noch in Ordnung ist und meldet den
- beschriebenen Fehler.
-
- Übrigens: Auch unter MultiTOS tritt dieses Problem zunächst auf. Hier kann es
- jedoch durch Setzen der memory-protection-flags im PRG-Header auf GLOBAL
- einfacher behoben werden.
-
- Durch den Patch benutzt der GFA-Compiler die ersten 16 Byte des hinter dem
- MShrink liegenden Speicherbereiches nicht mehr und überschreibt demzufolge
- keinen MCB. Das Verhalten des Compilers bleibt trotzdem inkorrekt, da der
- allozierte Bereich nicht unbedingt hinter dem vom Compiler noch belegten
- Speicher liegen muß (obwohl dies in der Regel zutrifft).
-
- --------------------------------------------------------------------------------
- Patchen des Interpreters
- --------------------------------------------------------------------------------
- Hierbei handelt es sich entweder um von GFA dokumentierte, praktische
- Konfigurationspatches oder um Fehlerkorrekturen, die zum Großteil von
- Christoph Conrad aufgespürt wurden.
-
- Patchbare Interpreter:
-
- Version: Dateilänge:
- 3.6TT 104770
- 104766
- 104739
- 3.5E 103510
- 3.50 102519
- 102523
- 3.07 92894
-
- Was wird im Interpreter gepatcht?
-
- -Keine LINEA-Aufrufe mehr:
- Siehe auch LIBPATCH.TXT. Beim Bewegen der Maus im Editor gibt es zwar
- nun leichte Flecken, dafür aber keine beim laufenden Programm.
-
- -Keine SETCOLOR-Aufrufe mehr, die auf dem TT die Farben verstellen:
- Das Basic begeht beim internen Setzen und Abfragen der Bildschirmfarben
- einen Fehler, der in Auflösungen wie TT-Mittel dazu führt, daß nach dem
- Interpreter-Lauf einige Farben verstellt sind. Dieser Patch verhindert dies.
- Auch der Befehl SETCOLOR hat danach keine Wirkung mehr. Hier sollte ohnehin
- besser VSETCOLOR verwendet werden.
-
- -Kein Abbruch mehr bei MERGE, wenn ASCII 4 im Quelltext vorkommt:
- Der Interpreter bricht normalerweise das Mergen von Files, die das Zeichen
- ASCII 4 (EOT == End of transmission, CONTROL D, Pfeil nach links) enthalten,
- ab der entsprechenden Zeile ab. Unter UN*Xen ist ASCII 4 das Dateiendezeichen,
- was auf einst recht grosse Ambitionen von GFA-Systemtechnik hindeutet.
- Dieser Patch unterbindet dieses störende Verhalten.
-
- -CALL-Bug beheben:
- Der CALL-Befehl im Interpreter Version 3.6 D TT der Groesse 104770 Byte ist
- aufgrund eines Tippfehlers (movem.l a4/a6,-(sp) anstatt movem.l a4-a6,-(sp))
- fehlerhaft. Der Patch 'repariert' diesen Befehl.
-
- -Die DEFLIST-Voreinstellung
- -Die Editor-Farben
- -Der Default-Variablentyp, der ohne Postfix eingegeben werden darf.
- Voreingestellt Float.
- -Kein CLS bei Programmstart
-
- Das Patchen ist denkbar einfach: Nur die zu patchenden Optionen festlegen und
- 'Patchen...' anwählen. Danach kann der gepatchte Interpreter unter einem neuen
- Namen gespeichert werden.
-
- --------------------------------------------------------------------------------
- Versions-History
- --------------------------------------------------------------------------------
- Vers. Datum
-
- 24.07.93 -Erste vorläufige Version. Und schon ändere ich mal
- kurz die Versionsnummernzählung. :-)
-
- 0.90ß 26.07.93 -MERGE-Patch für den 3.50er Interpreter eingebaut.
- -Default-Variablentyp des geladenen Interpreters
- wird ausgelesen und angezeigt.
- -Patches um weitere Versionen erweitert.
-
- 0.91ß 27.07.93 -Kein 'Mäusedreck' bei Dateiauswahlbox mehr
- -Mit der Compiler-Patch-Unterstützung begonnen.
-
- 0.92ß 29.07.93 -DEFFILL-Patch eingebaut, war in der Tat falsch dokumentiert.
- -GFA_BCOM.PRG wird nicht mehr anhand einer Tabelle ausgewertet,
- sondern alle nötigen Daten werden direkt aus der Datei geholt.
-
- 01.08.93 -Der Compiler wurde falsch gepatcht.
-
- 0.93 08.08.93 -Library-Patches integriert.
-
- 0.94 13.08.93 -Aufruf des MAKE_NDX-Programmes war fehlerhaft.
- -MERGE-Patch für den 3.5E Interpreter eingebaut.
- -Anleitung überarbeitet.
-
- 0.95 19.08.93 -Restliche Patches eingebaut: Line-A und SETCOLOR-Unter-
- drückung für die Version 3.07.
- -DEFFILL-Patch um den Wert 8 erweitert.
- -Doku nochmal überarbeitet.
-
- 0.96 28.08.93 -3.6 Interpreter mit 104739 Bytes wird unterstützt.
- -Line-A Patch für 3.07 funktionierte nicht.
-
- 0.97 27.09.93 -3.6 Interpreter mit 104766 Bytes wird unterstützt.
-
- 0.98 29.09.93 -Mit den Anpassungen an den MAG!X-Compiler-Patch begonnen.
-
- 02.10.93 -MAG!X-Patch komplett eingebaut.
-
- 04.10.93 -Zu Beginn erscheint jetzt ein kurzer Informationsdialog.
-
- 0.99 23.01.94 -Neuer INIT-Teil, der alte enthielt einen Fehler im
- Zusammenhang mit Fließkommavariablen.
-
- -Das Programm benutzt kein LINEA mehr.
-
- --------------------------------------------------------------------------------
- Und sonst?
-
- Die neueste Version dieses Programmes ist immer in der Maus DO2 zu finden und
- über den Mausring damit auch in MK und UN2.
-
- Wer Vorschläge hat, weitere Patches kennt oder eine Basic-Version besitzt, die
- nicht unterstützt wird, kann sich gerne an uns wenden.
-
- Viel Spaß wünschen
-
- Gregor Duchalski & Christoph Conrad
-
- --------------------------------------------------------------------------------
- Herne, 23.01.94
-